package com.xiyuan.smartutils;


/**
 * 位运算工具类
 * 1.左为高，右为低
 * 2.高1位表示左边第一位=低8位
 *
 * @version v1.0.0 @author lgz 2017-9-21 新建与整理
 */
public final class Bits {
    
    /**
     * 判断字节指定的位上是不是0
     *
     * @param ib   字节
     * @param hpos 高第1-8之间
     * @return =true表示是，=false表示否
     */
    public static boolean isZero(byte ib, int hpos) {
        return ((ib >>> (8 - hpos)) & 0x00000001) == 0;
    }
    
    /**
     * 判断字节指定的位上是不是1
     *
     * @param ib   字节
     * @param hpos 高第1-8之间
     * @return =true表示是，=false表示否
     */
    public static boolean isOne(byte ib, int hpos) {
        return ((ib >>> (8 - hpos)) & 0x00000001) == 1;
    }
    
    /**
     * 把有符号字节转换成无符号整数
     *
     * @param ib 字节
     * @return 无符号整数
     */
    public static int unsigned(byte ib) {
        return ib & 0xFF;
    }
}
